package cn.com.chengmandian.bike.service;

import cn.com.chengmandian.bike.dto.CreateWxPayScoreDto;
import cn.com.chengmandian.bike.model.EbPreOrder;
import cn.com.chengmandian.bike.model.EbRideOrder;
import cn.com.chengmandian.core.web.pojo.AjaxResult;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * 电单车运营-预支付-订单信息 服务类
 * </p>
 *
 * @author AutoGenerator
 * @since 2024-05-31
 */
public interface IEbPreOrderService extends IService<EbPreOrder> {
    /**
     * 取消用户的支付分订单
     * @param memberId
     */
    void cancelOrder(Integer memberId);

    /**
     * 获取可用的支付分订单
     * @param memberId
     * @return
     */
    EbPreOrder getNotUsePayScore(Integer memberId);

    /**
     * 为骑行订单支付
     * @param rideOrder
     * @return
     */
    boolean payForRideOrder(EbRideOrder rideOrder);

    /**
     * 是否正在支付钟
     * @param payId
     * @return
     */
    EbPreOrder getPayIng(Integer payId);

    /**
     * 预授权下单
     * @param dto
     * @return
     */
    AjaxResult addOrder(CreateWxPayScoreDto dto);

    AjaxResult preAuthorization();

    AjaxResult preAuthorizationSelect(String payNo);

    /**
     * 通知响应建单成功
     * @param preNo
     * @param orderId
     */
    void addOrderSuccess(String preNo, String orderId);

    /**
     * 交易成功
     * @param preNo
     * @param channelNo
     */
    void paySuccessByNo(String preNo, String channelNo);

    /**
     * 根据订单ID取消订单
     * @param preOrderId
     */
    void cancelOrderById(Integer preOrderId);

    /**
     * 根据骑行订单取消微信支付分订单
     * @param rideOrder
     */
    void cancelOrderByRideOrder(EbRideOrder rideOrder);

    /**
     * 根据骑行订单ID修改支付分金额
     * @param rideOrderId
     */
    void updateOrderMoneyByRideId(Integer rideOrderId) throws Exception;
}
